3.6.7.6l2bmr<rrn_opcode>-L1BM→L2BM縮約
L2BMについて、配下のすべてまたは一部のL1BMから 16 長語/サイクルで連続領域を読み、L1B方向に
指定した演算で縮約し、L2BMに書き込む。
第3.6.7.2節で述べたL2BM→L1BM放送と対になっている。
code:txt
文法
l2bmr<rrn_opcode>@<l1bset> $lb<addr_b> $lc<addr_c>
<rrn_opcode>は第3.5.5節で定めた縮約演算指定である。
@以降は第3.6.7.1節で定めたL1B集合の指定であり、これに含まれるL1Bのみから読み出しが行われる。
省略時は全L1Bから読み出しが行われる。L1B集合に含まれないL1Bからは縮約演算の単位元が送信さ
れる。
読み出しアドレス<addr_b>と書き込みアドレス<addr_c>はいずれも 16 長語アラインである必要がある。
code:txt
効果
for cycle= 0:4
forall group,l2b
uint_t src_addr=addr_b +cycle* 16
uint_t dst_addr=addr_c +cycle* 16
LongWord buf16
buf: =get_unit_value(rrn_opcode)
for l1b in l1bset
buf0:16 =rrn_opcode(buf0:16,MEMgroupl2bl1b.l1bm[src_addr:src_addr
+16])
MEMgroupl2b.l2bmdst_addr:dst_addr+16 = buf0:16
code:txt
注意:縮約を内部的に実際にこの手順で行っているわけではない。
code:txt
例
l2bmrdfadd@0,4 $lb0 $lc0
0,4番L1BMからそれぞれ 64 長語を読み出し、倍精度浮動小数点数と解釈してL1B方向に加算し、結果
の計 64 長語をL2BMに書き込む。